package com.regent.central.bill.service;

import com.regent.central.bill.core.Clearance;
import com.regent.central.infrastructure.service.DomainService;

import java.math.BigDecimal;
import java.util.List;

public interface ClearanceService extends DomainService<Clearance> {

    /**
     * 撤销核销记录
     *
     * @param clearanceId  核销记录ID
     * @param userCanceled 撤销人
     */
    void cancel(String clearanceId, String userCanceled);

    /**
     * 更新核销记录的核销金额
     *
     * @param clearanceId 核销记录ID
     * @param amount      核销金额
     * @param userId      操作人ID
     */
    void update(String clearanceId, BigDecimal amount, String userId);

    /**
     * 获取销售单的核销记录
     *
     * @param saleOrderId 销售单ID
     * @return 销售单的核销记录
     */
    List<Clearance> getSaleOrderClearances(String saleOrderId);

    /**
     * 获取销售单的核销记录
     *
     * @param saleOrderId 销售单ID
     * @param canceled    已撤销
     * @param deleted     已删除
     * @return 销售单的核销记录
     */
    List<Clearance> getSaleOrderClearances(String saleOrderId, Boolean canceled, Boolean deleted);

}